﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;
using System.Windows.Forms;
using System.Collections;

namespace IM.gerenciadores
{
    public class GerenciadorDeTexto
    {
        private GerenciadorDeTexto()
        {
            //Singleton
        }
        private static GerenciadorDeTexto instancia;
        public static GerenciadorDeTexto getInstancia()
        {
            if (GerenciadorDeTexto.instancia == null)
            {
                GerenciadorDeTexto.instancia = new GerenciadorDeTexto();
            }
            return GerenciadorDeTexto.instancia;
        }

        private Hashtable estilos;
        private Hashtable Estilos
        {
            get
            {
                if (estilos == null)
                {
                    estilos = new Hashtable();
                    estilos.Add("Bold", FontStyle.Bold);
                    estilos.Add("Italic", FontStyle.Italic);
                    estilos.Add("Regular", FontStyle.Regular);
                    estilos.Add("Strikeout", FontStyle.Strikeout);
                    estilos.Add("Underline", FontStyle.Underline);
                }
                return estilos;
            }
            set { estilos = value; }
        }

        public FontStyle configuraEstilo(String selectedStyles)
        {
            FontStyle retorno = FontStyle.Regular;

            String[] estilos = selectedStyles.Replace(" ", "").Split(',');
            foreach (String str in estilos)
            {
                retorno = retorno | (FontStyle)Estilos[str];
            }

            return retorno;
        }

        public void configuraCorMensagem(InterfaceRemota.IMensagem msgm, Color cor)
        {
            msgm.A = cor.A;
            msgm.R = cor.R;
            msgm.G = cor.G;
            msgm.B = cor.B;
        }

        public void configuraFonteMensagem(InterfaceRemota.IMensagem msgm, Font fonte)
        {
            msgm.NomeFonte = fonte.Name;
            msgm.TamanhoFonte = fonte.Size;
            msgm.EstiloFonte = fonte.Style.ToString();
        }

        public Color getCorInversa(Color cor)
        {
            Color corInvertida;

            corInvertida = Color.FromArgb(255 - cor.R, 255 - cor.G, 255 - cor.B);

            return corInvertida;
        }

    }
}
